//对 axios 进行二次封装
import axios from "axios";
//引入进度条
import nprogress from "nprogress";
import 'nprogress/nprogress.css'
//start：进度条开始   done：进度条结束

//1.利用 axios 对象的方法 create，去创建一个 axios 实例
//2.request 就是 axios，只不过稍微配置一下
const request = axios.create({
  //配置对象
  //基础路径，发起请求的时候，路径当中会出现 安排 api 
  baseURL: '/mock',
  //请求时间超过5秒
  timeout: 5000,
});
// 请求拦截器：发起请求之前，请求拦截器可以检测到，可以在请求发出去之前做一些事情
request.interceptors.request.use((config) =>{
  nprogress.start()
  //config:配置对象，对象里面有一个属性很重要，headers 请求头
  return config
});
//相应拦截器
request.interceptors.response.use((res) =>{
  nprogress.done()
  //成功回调函数：服务器相应数据回来以后，响应拦截器可以检测到，
  return res.data
},
(error) =>{
  //响应失败回调函数
  return Promise.reject(new Error('failed'))
});

//向外暴露 axios
export default request